package main

import (
	"fmt"
)

func main() {
	var a [10]int
	var b [5]int
	var c [5]int32
	fmt.Printf("type a: %T\ntype b: %T\ntype c: %T\n", a, b, c)

	// 数组默认是值传递
	fmt.Println("before change: ", b)
	change(&b)
	fmt.Println("after change: ", b)

	// 标准初始化
	var arr1 [5]int = [5]int{1, 2, 3, 4, 5}
	fmt.Println(arr1)

	// 省略类型，会自动判断数组长度与元素类型
	var arr2 = [5]int{1, 2, 3, 4, 5}
	fmt.Println(arr2)

	// 省略长度，会自动判断初始化元素个数来确定长度
	var arr3 = [...]int{1, 2, 3, 4, 5}
	fmt.Println(arr3)

	// 指定索引初始化
	var arr4 = [5]int{0: 3, 4: 3}
	fmt.Println(arr4)

}

func change(a *[5]int) {
	a[0] = 100
}
